package course.examples.ContentProviders.ContactsListWithAdapter;
import java.io.FileNotFoundException;
import java.io.InputStream;
import android.content.Context;
import android.database.Cursor;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.provider.ContactsContract.Contacts;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ResourceCursorAdapter;
import android.widget.TextView;
public class ContactInfoListAdapter extends ResourceCursorAdapter {
private final String TAG = "ContactInfoListAdapter";
private final Context mApplicationContext;
private final int mBitmapSize;
private final BitmapDrawable mNoPictureBitmap;
public ContactInfoListAdapter(Context context, int layout, Cursor c,
int flags) {
super(context, layout, c, flags);
mApplicationContext = context.getApplicationContext();
// default thumbnail photo
mNoPictureBitmap = (BitmapDrawable) context.getResources().getDrawable(
R.drawable.ic_contact_picture);
mBitmapSize = (int) context.getResources().getDimension(
R.dimen.textview_height);
mNoPictureBitmap.setBounds(0, 0, mBitmapSize, mBitmapSize);
}
// Create and return a new contact data view
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return inflater.inflate(R.layout.list_item, parent, false);
}
// Update and return a contact data view
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView textView = (TextView) view.findViewById(R.id.name);
textView.setText(cursor.getString(cursor
.getColumnIndex(Contacts.DISPLAY_NAME)));
// Default photo
BitmapDrawable photoBitmap = mNoPictureBitmap;
// Get actual thumbnail photo if it exists
String photoContentUri = cursor.getString(cursor
.getColumnIndex(Contacts.PHOTO_THUMBNAIL_URI));
if (null != photoContentUri) {
InputStream input = null;
try {
// Read thumbnail data from input stream
input = context.getContentResolver().openInputStream(
Uri.parse(photoContentUri));
if (input != null) {
photoBitmap = new BitmapDrawable(
mApplicationContext.getResources(), input);
photoBitmap.setBounds(0, 0, mBitmapSize, mBitmapSize);
}
} catch (FileNotFoundException e) {
Log.i(TAG, "FileNotFoundException");
}
}
// Set thumbnail image
textView.setCompoundDrawables(photoBitmap, null, null, null);
}
}